#Param: fd, puntero al string, cantidad de bytes para imprimir
#Retorna la cantidad de bytes escritos en v0

#define STDERR 2
#include <mips/regdef.h>
#include <sys/syscall.h>

.data
msj_error : .asciiz "Error de Escritura\n"

.text
.align 2
.globl write
.ent write

write:
.frame $fp,48,ra
.set noreorder
.cpload t9
.set reorder
subu sp,sp,48
.cprestore 32
sw ra,44(sp)
sw $fp,40(sp)
move $fp,sp

#guardo los parametros recibidos
sw a0,48(sp)
sw a1,52(sp)
sw a2,56(sp)

li v0,SYS_write
syscall
bne a3, zero, write_error #si hay error

eof:
move sp,$fp
lw ra,44(sp)
lw $fp,40(sp)
addu sp,sp,48
j ra 

#si hay un error termina la ejecucion del programa
write_error:
li v0,SYS_write
la a0, STDERR #cargo el stderr
la a1,msj_error
li a2,20
syscall #imprimo un msj de error


li v0,SYS_exit 
li a0,1
syscall #termino la ejecucion del programa



.end write
